return {
  {'akinsho/toggleterm.nvim', version = "*", config = true},
  {
    "nvim-neo-tree/neo-tree.nvim",
    branch = "v3.x",
    dependencies = {
      "nvim-lua/plenary.nvim",
      "MunifTanjim/nui.nvim",
      "nvim-tree/nvim-web-devicons",
    },
    lazy = false, -- neo-tree will lazily load itself
    ---@module 'neo-tree'
    ---@type neotree.Config
    opts = {
        -- options go here
        close_if_last_window = true,
        popup_border_style = "",
        window = {
            width = 25,
            mapping_options = {
                noremap = true,
                nowait = true,
            },
            mappings = {
                -- ["<cr>"] = "open_tabnew",
                -- ["t"] = "open",
                ["S"] = "split_with_window_picker",
                ["s"] = "vsplit_with_window_picker",
                ["<A-,>"] = function()
                    local tabs = vim.api.nvim_list_tabpages()
    
                    for _, tab in ipairs(tabs) do
                        -- 获取当前标签页的所有窗口
                        local wins = vim.api.nvim_tabpage_list_wins(tab)
                        
                        for _, win in ipairs(wins) do
                            local buf = vim.api.nvim_win_get_buf(win)
                            local buf_name = vim.fn.bufname(buf)
                            
                            -- 检查是否是 neo-tree 文件系统缓冲区（支持任意编号）
                            if string.find(buf_name, "^neo%-tree filesystem %[%d+%]$") then
                                -- 使用全局变量设置宽度
                                vim.g.neotree_width = vim.g.neotree_width - 5
                                vim.api.nvim_win_set_width(win, vim.g.neotree_width)
                            end
                        end
                    end
                end,
                ["<A-.>"] = function()
                    local tabs = vim.api.nvim_list_tabpages()
    
                    for _, tab in ipairs(tabs) do
                        local wins = vim.api.nvim_tabpage_list_wins(tab)
                        
                        for _, win in ipairs(wins) do
                            local buf = vim.api.nvim_win_get_buf(win)
                            local buf_name = vim.fn.bufname(buf)
                            
                            if string.find(buf_name, "^neo%-tree filesystem %[%d+%]$") then
                                vim.g.neotree_width = vim.g.neotree_width + 5
                                vim.api.nvim_win_set_width(win, vim.g.neotree_width)
                            end
                        end
                    end
                end
            }
        }
    }
  },
  {
    "antosha417/nvim-lsp-file-operations",
    dependencies = {
      "nvim-lua/plenary.nvim",
      "nvim-neo-tree/neo-tree.nvim", -- makes sure that this loads after Neo-tree.
    },
    config = function()
      require("lsp-file-operations").setup()
    end,
  },
  {
    "s1n7ax/nvim-window-picker",
    version = "2.*",
    config = function()
      require("window-picker").setup({
        filter_rules = {
          include_current_win = false,
          autoselect_one = true,
          -- filter using buffer options
          bo = {
            -- if the file type is one of following, the window will be ignored
            filetype = { "neo-tree", "neo-tree-popup", "notify" },
            -- if the buffer type is one of following, the window will be ignored
            buftype = { "terminal", "quickfix" },
          },
        },
      })
    end,
  },
}
